package com.zxy.leetcode.lcci;

/**
 * https://leetcode-cn.com/problems/compress-string-lcci/
 *
 * 字符串压缩
 * 字符串压缩。利用字符重复出现的次数，编写一种方法，实现基本的字符串压缩功能。
 * 比如，字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短，
 * 则返回原先的字符串。你可以假设字符串中只包含大小写英文字母（a至z）。
 */
public class Test0106 {

    public static void main(String[] args) {
        Test0106 test = new Test0106();
        System.out.println(test.compressString("aabcccccaaa"));
        System.out.println(test.compressString("abbccd"));
    }

    public String compressString(String S) {
        if (S == null || S.length() <= 1) {
            return S;
        }

        StringBuilder stringBuilder = new StringBuilder();
        char pre = S.charAt(0);
        stringBuilder.append(pre);
        int count = 1;
        for (int i=1; i<S.length(); i++) {
            if (S.charAt(i) == pre) {
                count++;
            }else {
                stringBuilder.append(count);
                pre = S.charAt(i);
                stringBuilder.append(pre);
                count = 1;
            }
        }
        stringBuilder.append(count);

        return stringBuilder.length() >= S.length() ? S : stringBuilder.toString();
    }
}
